package util;

import java.util.Random;
import mathutil.Random1;

/**
 * @author
 */
public class MathUtil {

    public static int resolvePrimeToNumber() {
         resolvePrime(987654321098765432L);
        return 0;
    }

    public static String resolveSmallPrime() {
        return resolvePrime(432L);
    }

    public static String resolvePrime() {
        return resolvePrime(987654321098765432L);
    }

    public static void resolvePrime10() {
        for (int i = 0; i < 10; i++) {
            resolvePrime(987654321098765432L);
        }
    }


    /**
     * 分解质因数
     * @param num
     * @return
     */
    public static String resolvePrime(long num) {
        // 定义结果字符串缓存对象，用来保存结果字符
        StringBuffer sb = new StringBuffer(num + "=");

        // 定义最小素数
        int i = 2;

        // 进行辗转相除法
        while (i <= num) {

            // 若num 能整除 i ，则i 是num 的一个因数
            if (num % i == 0) {

                // 将i 保存进sb 且 后面接上 *
                sb.append(i + "*");

                // 同时将 num除以i 的值赋给 num
                num = num / i;

                // 将i重新置为2
                i = 2;
            } else {

                // 若无法整除，则i 自增
                i++;
            }
        }

        // 去除字符串缓存对象最后的一个*，将结果返回
        return sb.substring(0, sb.toString().length() - 1);
    }

}
